set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

CREATE procedure [dbo].[std_sp_get_listado_expedientes]  
     @TIPO_BUSQUEDA      char(1)
    ,@NUM_EXP_TEXP       varchar(40)
    ,@FECH_EXP_TEXP_INI  varchar(10)
    ,@FECH_EXP_TEXP_FIN	 varchar(10)
    ,@OFI_BUSQ_TEXP      int
    ,@CODI_EDOC_TED      numeric(9)
    ,@TIPO_BANDEJA       CHAR(1)
    ,@PERFIL             smallint
    ,@CODI_EMP           int
    ,@CODI_OFI           int
    ,@CODI_USU           int
    ,@CODI_ENC           int
as
begin  
   
IF @TIPO_BANDEJA = 'E'
BEGIN
   if @TIPO_BUSQUEDA = 'P' --PERSONAL
   begin
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND E.OFI_ELAB_TEXP = @CODI_OFI
           AND E.EMP_ELAB_TEXP = @CODI_EMP
         UNION
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND E.OFI_ELAB_TEXP = @CODI_OFI
           AND E.EMP_ELAB_TEXP = @CODI_EMP
           AND (
        	    --// 1) Si el documento no es proyecto, filtra por OFI_ELAB_TDOC y EMP_ELAB_TDOC
        	    (D.FLG_PROY_TDOC  = 'N' AND D.OFI_ELAB_TDOC  =  @CODI_OFI AND D.EMP_ELAB_TDOC = @CODI_EMP )
        	     OR 
        	    --// 2) Si el documento es proyecto
        	    (D.FLG_PROY_TDOC  = 'S' 
        	       AND (
        	    --// 2.1) Si esta en etapa de elaboracion (FLG_PROY_ELAB_TDOC = S), se filtra por OFI_ELAB_TDOC y EMP_ELAB_TDOC
        	           ( D.FLG_PROY_ELAB_TDOC = 'S' AND D.OFI_ELAB_TDOC  =  @CODI_OFI AND D.EMP_ELAB_TDOC = @CODI_EMP )
        	            OR 
        	           ( D.FLG_PROY_ELAB_TDOC = 'S' AND D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM EMP_EMISOR WHERE ORD_EMP_TEE  = 1 AND CODI_OFI_TEE = @CODI_OFI AND CODI_EMP = @CODI_EMP))
        	            OR 
        	    --// 2.2) Si no esta en etapa de elaboracion (FLG_PROY_ELAB_TDOC = N), es decir el documento esta en etapa de envio, enviado, etc. se filtra por la tabla EMP_EMISOR COID_TOFI_TEE y CODI_EMP
        	           ( D.FLG_PROY_ELAB_TDOC = 'N' AND (
        	                                             ( D.OFI_ELAB_TDOC  =  @CODI_OFI AND D.EMP_ELAB_TDOC = @CODI_EMP ) OR 
        	                                             ( D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM EMP_EMISOR WHERE ORD_EMP_TEE  = 1 AND CODI_OFI_TEE = @CODI_OFI AND CODI_EMP = @CODI_EMP))) )
        	    )
        	    ) --// 2 end
        	    )
        ORDER BY E.FECH_EXP_TEXP DESC, E.CODI_EXP_TEXP DESC
   end
      

   if @TIPO_BUSQUEDA = 'G' --GLOBAL / GENERAL
   begin
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND (E.OFI_ELAB_TEXP = @OFI_BUSQ_TEXP OR @OFI_BUSQ_TEXP = 0)
        ORDER BY E.FECH_EXP_TEXP DESC, E.CODI_EXP_TEXP DESC
   end


   if @TIPO_BUSQUEDA = 'A' --AREA
   begin
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND E.OFI_ELAB_TEXP = @CODI_OFI
         UNION
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND E.OFI_ELAB_TEXP = @CODI_OFI
           AND (
        	    --// 1) Si el documento no es proyecto, filtra por OFI_ELAB_TDOC 
        	    (D.FLG_PROY_TDOC  = 'N' AND D.OFI_ELAB_TDOC  =  @CODI_OFI )
        	     OR 
        	    --// 2) Si el documento es proyecto
        	    (D.FLG_PROY_TDOC  = 'S' 
        	       AND (
        	    --// 2.1) Si esta en etapa de elaboracion (FLG_PROY_ELAB_TDOC = S), se filtra por OFI_ELAB_TDOC
        	           ( D.FLG_PROY_ELAB_TDOC = 'S' AND D.OFI_ELAB_TDOC  =  @CODI_OFI )
        	            OR 
        	           ( D.FLG_PROY_ELAB_TDOC = 'S' AND D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM EMP_EMISOR WHERE ORD_EMP_TEE  = 1 AND CODI_OFI_TEE = @CODI_OFI))
        	            OR 
        	    --// 2.2) Si no esta en etapa de elaboracion (FLG_PROY_ELAB_TDOC = N), es decir el documento esta en etapa de envio, enviado, etc. se filtra por la tabla EMP_EMISOR COID_TOFI_TEE y CODI_EMP
        	           ( D.FLG_PROY_ELAB_TDOC = 'N' AND (
        	                                             ( D.OFI_ELAB_TDOC  =  @CODI_OFI AND D.EMP_ELAB_TDOC = @CODI_EMP ) OR 
        	                                             ( D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM EMP_EMISOR WHERE ORD_EMP_TEE  = 1 AND CODI_OFI_TEE = @CODI_OFI))) )
        	    )
        	    ) --// 2 end
        	    )
        ORDER BY E.FECH_EXP_TEXP DESC, E.CODI_EXP_TEXP DESC
   end

END

IF @TIPO_BANDEJA = 'R'
BEGIN
   if @TIPO_BUSQUEDA = 'P' --PERSONAL
   begin
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
           AND (E.OFI_ELAB_TEXP = @OFI_BUSQ_TEXP OR @OFI_BUSQ_TEXP = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND D.CODI_EDOC_TED != 1
           AND D.CODI_TMOV_TTM != 2
           AND D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM SEGUIMIENTO WHERE OFI_DEST_TSEG = @CODI_OFI AND CODI_DEST_TSEG = @CODI_EMP AND FLG_ANU_TSEG IS NULL)
        ORDER BY E.FECH_EXP_TEXP DESC, E.CODI_EXP_TEXP DESC
   end

   if @TIPO_BUSQUEDA = 'G' --GLOBAL / GENERAL
   begin
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON D.CODI_DOC_TDOC = SEG.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
           AND (E.OFI_ELAB_TEXP = @OFI_BUSQ_TEXP OR @OFI_BUSQ_TEXP = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND D.CODI_EDOC_TED != 1
        ORDER BY E.FECH_EXP_TEXP DESC, E.CODI_EXP_TEXP DESC
   end

   if @TIPO_BUSQUEDA = 'A' --AREA
   begin
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON D.CODI_DOC_TDOC = SEG.CODI_DOC_TDOC AND SEG.OFI_DEST_TSEG = @CODI_OFI AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
           AND (E.OFI_ELAB_TEXP = @OFI_BUSQ_TEXP OR @OFI_BUSQ_TEXP = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND D.CODI_EDOC_TED != 1
           AND D.CODI_TMOV_TTM != 2
           AND D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM SEGUIMIENTO WHERE OFI_DEST_TSEG = @CODI_OFI AND FLG_ANU_TSEG IS NULL)
        ORDER BY E.FECH_EXP_TEXP DESC, E.CODI_EXP_TEXP DESC
   end

END


IF @TIPO_BANDEJA = 'T'
BEGIN
   if @TIPO_BUSQUEDA = 'P' --PERSONAL
   begin
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND E.OFI_ELAB_TEXP = @CODI_OFI
           AND E.EMP_ELAB_TEXP = @CODI_EMP
         UNION
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND E.OFI_ELAB_TEXP = @CODI_OFI
           AND E.EMP_ELAB_TEXP = @CODI_EMP
           AND (
        	    --// 1) Si el documento no es proyecto, filtra por OFI_ELAB_TDOC y EMP_ELAB_TDOC
        	    (D.FLG_PROY_TDOC  = 'N' AND D.OFI_ELAB_TDOC  =  @CODI_OFI AND D.EMP_ELAB_TDOC = @CODI_EMP )
        	     OR 
        	    --// 2) Si el documento es proyecto
        	    (D.FLG_PROY_TDOC  = 'S' 
        	       AND (
        	    --// 2.1) Si esta en etapa de elaboracion (FLG_PROY_ELAB_TDOC = S), se filtra por OFI_ELAB_TDOC y EMP_ELAB_TDOC
        	           ( D.FLG_PROY_ELAB_TDOC = 'S' AND D.OFI_ELAB_TDOC  =  @CODI_OFI AND D.EMP_ELAB_TDOC = @CODI_EMP )
        	            OR 
        	           ( D.FLG_PROY_ELAB_TDOC = 'S' AND D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM EMP_EMISOR WHERE ORD_EMP_TEE  = 1 AND CODI_OFI_TEE = @CODI_OFI AND CODI_EMP = @CODI_EMP))
        	            OR 
        	    --// 2.2) Si no esta en etapa de elaboracion (FLG_PROY_ELAB_TDOC = N), es decir el documento esta en etapa de envio, enviado, etc. se filtra por la tabla EMP_EMISOR COID_TOFI_TEE y CODI_EMP
        	           ( D.FLG_PROY_ELAB_TDOC = 'N' AND (
        	                                             ( D.OFI_ELAB_TDOC  =  @CODI_OFI AND D.EMP_ELAB_TDOC = @CODI_EMP ) OR 
        	                                             ( D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM EMP_EMISOR WHERE ORD_EMP_TEE  = 1 AND CODI_OFI_TEE = @CODI_OFI AND CODI_EMP = @CODI_EMP))) )
        	    )
        	    ) --// 2 end
        	    )
       UNION
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
           AND (E.OFI_ELAB_TEXP = @OFI_BUSQ_TEXP OR @OFI_BUSQ_TEXP = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND D.CODI_EDOC_TED != 1
           AND D.CODI_TMOV_TTM != 2
           AND D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM SEGUIMIENTO WHERE OFI_DEST_TSEG = @CODI_OFI AND CODI_DEST_TSEG = @CODI_EMP AND FLG_ANU_TSEG IS NULL)
        ORDER BY E.FECH_EXP_TEXP DESC, E.CODI_EXP_TEXP DESC
   end
      

   if @TIPO_BUSQUEDA = 'G' --GLOBAL / GENERAL
   begin
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
           AND (E.OFI_ELAB_TEXP = @OFI_BUSQ_TEXP OR @OFI_BUSQ_TEXP = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
        UNION
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON D.CODI_DOC_TDOC = SEG.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
           AND (E.OFI_ELAB_TEXP = @OFI_BUSQ_TEXP OR @OFI_BUSQ_TEXP = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND D.CODI_EDOC_TED != 1
        ORDER BY E.FECH_EXP_TEXP DESC, E.CODI_EXP_TEXP DESC
   end


   if @TIPO_BUSQUEDA = 'A' --AREA
   begin
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND E.OFI_ELAB_TEXP = @CODI_OFI
         UNION
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON SEG.CODI_DOC_TDOC = D.CODI_DOC_TDOC AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND E.OFI_ELAB_TEXP = @CODI_OFI
           AND (
        	    --// 1) Si el documento no es proyecto, filtra por OFI_ELAB_TDOC 
        	    (D.FLG_PROY_TDOC  = 'N' AND D.OFI_ELAB_TDOC  =  @CODI_OFI )
        	     OR 
        	    --// 2) Si el documento es proyecto
        	    (D.FLG_PROY_TDOC  = 'S' 
        	       AND (
        	    --// 2.1) Si esta en etapa de elaboracion (FLG_PROY_ELAB_TDOC = S), se filtra por OFI_ELAB_TDOC
        	           ( D.FLG_PROY_ELAB_TDOC = 'S' AND D.OFI_ELAB_TDOC  =  @CODI_OFI )
        	            OR 
        	           ( D.FLG_PROY_ELAB_TDOC = 'S' AND D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM EMP_EMISOR WHERE ORD_EMP_TEE  = 1 AND CODI_OFI_TEE = @CODI_OFI))
        	            OR 
        	    --// 2.2) Si no esta en etapa de elaboracion (FLG_PROY_ELAB_TDOC = N), es decir el documento esta en etapa de envio, enviado, etc. se filtra por la tabla EMP_EMISOR COID_TOFI_TEE y CODI_EMP
        	           ( D.FLG_PROY_ELAB_TDOC = 'N' AND (
        	                                             ( D.OFI_ELAB_TDOC  =  @CODI_OFI AND D.EMP_ELAB_TDOC = @CODI_EMP ) OR 
        	                                             ( D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM EMP_EMISOR WHERE ORD_EMP_TEE  = 1 AND CODI_OFI_TEE = @CODI_OFI))) )
        	    )
        	    ) --// 2 end
        	    )
        UNION
		 select distinct 
			  'codigoExpediente'   = E.CODI_EXP_TEXP
			 ,'codigoEstado'       = E.CODI_EDOC_TED
			 ,'numeroExpediente'   = E.NUM_DOC_TEXP
			 ,'anioExpediente'     = E.ANIO_EXP_TEXP
			 ,'asuntoExpediente'   = ISNULL(E.ASUN_EXP_TEXP,'')
			 ,'fechaExpediente'    = ISNULL(CONVERT(varchar(10),E.FECH_EXP_TEXP,103),'')
			 ,'codigoOficina'      = E.OFI_ELAB_TEXP
			 ,'codigoEmpleado'     = E.EMP_ELAB_TEXP
			 ,'codigoUsuario'      = E.USU_ELAB_TEXP
			 ,'nombreUsuario'      = ISNULL(E.NOM_ELAB_TEXP,'')
			 ,'fechaCreacion'      = ISNULL(CONVERT(varchar(10),E.FECH_CREA_TEXP,103),'')
			 ,'flagAnulado'        = ISNULL(E.FLG_ANU_TEXP,'N')
			 ,'fechaAnulacion'     = ISNULL(CONVERT(varchar(10),E.FECH_ANU_TEXP,103),'')
			 ,'fechaReapertura'    = ISNULL(CONVERT(varchar(10),E.FECH_REAP_TEXP,103),'')
			 ,'fechaCierre'        = ISNULL(CONVERT(varchar(10),E.FECH_CIERRE_TEXP,103),'')
			 ,'siglasArea'         = A.vSIG_ARE
			 ,'descripcionEstado'  = EDOC.DESC_EDOC_TES
			 ,'totalDocumentos'    = (SELECT COUNT(D.CODI_DOC_TDOC) FROM DOCUMENTO D 
									   WHERE D.CODI_EXP_TEXP = E.CODI_EXP_TEXP 
										 AND (D.FLG_ANU_TDOC IS NULL OR D.FLG_ANU_TDOC='N')
                                         --AND D.CODI_EDOC_TED <> 1
									 )
             ,E.FECH_EXP_TEXP
		  FROM EXPEDIENTE E (INDEX = IDX_EXP_FECH_EST)
		  LEFT JOIN DOCUMENTO D ON E.CODI_EXP_TEXP = D.CODI_EXP_TEXP AND D.FLG_ANU_TDOC = 'N'
		  LEFT JOIN SEGUIMIENTO SEG ON D.CODI_DOC_TDOC = SEG.CODI_DOC_TDOC AND SEG.OFI_DEST_TSEG = @CODI_OFI AND SEG.FLG_ANU_TSEG IS null
		  LEFT JOIN TIPO_MOVIMIENTO TMOV ON TMOV.CODI_TMOV_TTM = D.CODI_TMOV_TTM
		  LEFT JOIN TIPO_DOCUMENTO  TDOC ON TDOC.CODI_TDOC_TTD = D.CODI_TDOC_TTD
		  LEFT JOIN ESTADO  EDOC ON EDOC.CODI_EDOC_TED = E.CODI_EDOC_TED
		  LEFT JOIN SEGURIDAD..SEG_AREA A ON A.CODI_ARE = E.OFI_ELAB_TEXP
		 WHERE CONVERT(varchar(10),E.FECH_EXP_TEXP,102) >= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_INI,103),102)
		   AND CONVERT(varchar(10),E.FECH_EXP_TEXP,102) <= CONVERT(varchar(10),CONVERT(datetime,@FECH_EXP_TEXP_FIN,103),102)
		   AND (E.CODI_EDOC_TED = @CODI_EDOC_TED or @CODI_EDOC_TED = 0)
           AND (E.OFI_ELAB_TEXP = @OFI_BUSQ_TEXP OR @OFI_BUSQ_TEXP = 0)
		   AND E.NUM_DOC_TEXP LIKE '%'+@NUM_EXP_TEXP+'%'
           AND D.CODI_EDOC_TED != 1
           AND D.CODI_TMOV_TTM != 2
           AND D.CODI_DOC_TDOC IN (SELECT CODI_DOC_TDOC FROM SEGUIMIENTO WHERE OFI_DEST_TSEG = @CODI_OFI AND FLG_ANU_TSEG IS NULL)
        ORDER BY E.FECH_EXP_TEXP DESC, E.CODI_EXP_TEXP DESC
   end
END

end
